package cn.edu.bupt.todo.controller;

import cn.edu.bupt.todo.entity.Todo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/todo")
//本示例程序未使用数据库，将数据保存在session中
@SessionAttributes("todos")
public class TodoController {

    @GetMapping("/list")
    String list(Model model, @SessionAttribute(required = false) List<Todo> todos) {
        if (todos == null) {
            todos = new ArrayList<>();
        }
        model.addAttribute("todos", todos);
        return "list";  //返回名为"list"的视图，即templates中的list.html
    }

    @GetMapping("/add")
    String addForm() {
        return "add"; //返回名为"add"的视图，即templates中的add.html
    }

    @PostMapping("/add")
    String add(Model model, @SessionAttribute List<Todo> todos,
               @RequestParam String content) {
        Todo todo = new Todo();
        todo.setContent(content);
        todos.add(todo);
        return "success"; //返回名为"success"的视图，即templates中的success.html
    }

    @GetMapping("/delete")
    String delete(Model model, @SessionAttribute List<Todo> todos,
                  @RequestParam int todoId) {
        todos.remove(todoId);
        return "success";
    }

    @GetMapping("/edit")
    String editForm(Model model, @SessionAttribute List<Todo> todos,
                    @RequestParam int todoId) {
        Todo todo = todos.get(todoId);
        model.addAttribute("todo", todo);
        model.addAttribute("todoId", todoId);
        return "edit";//返回名为"edit"的视图，即templates中的edit.html
    }

    @PostMapping("/edit")
    String edit(Model model, @SessionAttribute List<Todo> todos,
                @RequestParam String content,
                @RequestParam int todoId) {
        todos.get(todoId).setContent(content);
        model.addAttribute("todos", todos);
        return "success";
    }
}

